home *** CD-ROM | disk | FTP | other *** search
/ Alles Voor Internet / Tout Pour Internet / alles voor internet.iso / MacInternet™ / Net / Utilities / Seer family 2.0 / sr_da.src / sd_open_close.c < prev   
Encoding:
C/C++ Source or Header  |  1987-11-18  |  2.5 KB  |  100 lines  |  [TEXT/KAHL]

  1. /*
  2.     XX_open.c - handle desk accessory open
  3. */
  4. #include "sd.h"
  5. #include "sc_seer_globals.h"
  6. #include <menumgr.h>
  7.  
  8. int we_are_open=FALSE;
  9.  
  10. void da_menu_on(void);
  11. void da_menu_on()
  12. {MenuHandle a_menu;
  13.  a_menu=GetMenu(gl.res_base);    /*read the menu from a resource file*/
  14.  if(a_menu==NIL)                /*report failure*/
  15.       bomb(BOMB_nomenu,BMB_no_os,gl.res_base);
  16.  mydce->dCtlMenu=gl.res_base;    /*say we have our own menu*/
  17.  InsertMenu(a_menu,0);
  18.  DrawMenuBar();                    /*the menu bar is set up, paint it*/
  19. }
  20.  
  21. void one_time_init(void);
  22. void one_time_init()
  23. {long long_temp;
  24. /*compute our driver reference number, the installer
  25.     may have changed it and it is funny under da shells
  26. */
  27.  init_globals();        /* init globals common to da and program */
  28.  MaxMem(&long_temp);
  29.  
  30.  
  31.  da_refnum=mydce->dCtlRefNum;
  32.  if(da_refnum < 0) 
  33.   da_refnum = -da_refnum;
  34.  da_refnum = da_refnum - 1;
  35.  gl.res_base = 0xc000 + da_refnum*32;    /*our resource start here*/ 
  36.  gl.win_ref_num=mydce->dCtlRefNum;        /*set the kind field of program windows*/
  37.  
  38.  init_windef();
  39.  da_menu_on();
  40.  pdl_opn_res();            /*read in the pdl definition*/
  41.  
  42.  st_new_windef();        /*make the status display window*/
  43.  sk_new_windef();
  44.  pk_new_windef();        /*make the seer display window*/
  45.  
  46.  open_seer();            /*open the seer device*/
  47.  load_seer();            /*match version*/
  48.  configure_seer();        /*setup seers queues*/
  49.  
  50.  CloseDriver(-41);
  51.  CloseDriver(-40);
  52.  CloseDriver(-10);
  53.  CloseDriver(-9);        /*close the driver*/
  54.  seer_on();                /*start data collection*/
  55. }
  56.  
  57. int do_open()
  58. {if (mydce->dCtlStorage == 0) {
  59.     SysBeep(3);
  60.     return -23;            /*return openErr*/
  61.     }
  62.  /*set flags saying what we implement*/
  63.  mydce->dCtlFlags |= dNeedLock|dNeedGoodBye|dCtlEnable;
  64.  mydce->dCtlDelay =0;    /*call us as often as possible*/
  65.  
  66.  if(!we_are_open) {
  67.       we_are_open=TRUE;
  68.     one_time_init();
  69.     }
  70.  
  71.  mydce->dCtlFlags |= dNeedTime;    /*initilization done, get ticks*/
  72.  return noErr;
  73. }
  74.  
  75. int do_close()
  76. {mydce->dCtlFlags &= ~(dNeedLock|dNeedTime);    /*no longer need to be locked*/
  77.  if (mydce->dCtlStorage == 0)     /*if storage is not valid*/
  78.      return noErr;                /*nothing to clean up*/
  79.   if(we_are_open) {
  80.      we_are_open=FALSE;
  81.     close_seer();                /*close the seer device, bomb if we can't*/
  82.      delete_my_windefs();        /*delete any windows I made*/
  83.     if((gl.pdl_res !=0) &&
  84.        (gl.pdl_res != -1)) {
  85.             CloseResFile(gl.pdl_res);    /*closing the file will relase its data*/
  86.             gl.pdl_res=0;
  87.          }
  88.     if(gl.sp_header_q!=NIL) {    /*seer header queue*/
  89.         DisposPtr(gl.sp_header_q);
  90.         gl.sp_header_q=NIL;
  91.         }
  92.      if(gl.sp_data_q!=NIL) {            /*seer data queue*/
  93.         DisposPtr(gl.sp_data_q);
  94.         gl.sp_data_q=NIL;
  95.          }
  96.      }
  97.  return noErr;
  98. }
  99.  
  100.